package com.csj.lc.base;

import com.csj.lc.controller.UserController;
import com.csj.lc.entity.User;
import com.csj.lc.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.testng.Assert;

@RunWith(SpringJUnit4ClassRunner.class)
public class UnitTest{

    @Mock
    UserService userService;

    //上面mock的数据需要注入到哪里
    @InjectMocks
    UserController userController;

    @Test
    public void test() {

        //准备mock返回的数据
        User user = new User();
        user.setUserId(14);
        user.setUserName("Gun");

        //mock服务或者类中的某个方法，当参数是什么时，返回值是什么
        Mockito.when( userService.getUserById( 14 )).thenReturn( user );

        //执行单元测试逻辑
        User result = userController.getUser( 14 );

        //Assert是Junit包下的一个工具类，提供了许多断言方法：主要用于测试传递进去的两个参数
        //断言 : 若两者一致，程序往下走； 否则中断测试方法，抛出异常信息
        Assert.assertEquals("Gun", user.getUserName() ); //

        System.out.println( " Fuck ");

    }


}

